package com.sample.android.sqlite;

import java.util.List;

import android.app.FragmentManager;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.sample.android.entity.*;
import com.sample.android.dao.*;
import com.sample.android.wifi.R;

public class TestMySQLiActivity extends ListActivity implements
		SynchronisationFragment.TaskCallbacks
{
	private UtilisateurDataSource	DAOutilisateur;
	private ProgressBar				progress;
	private TextView				text;

	private static final String		TAG_TASK_FRAGMENT	= "synchronisation_fragment";

	private SynchronisationFragment	mTaskFragment;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.mysqli);

		DAOutilisateur = new UtilisateurDataSource(this);
		DAOutilisateur.open();

		List<Utilisateur> values = DAOutilisateur.getAllUtilisateurs();

		// use the SimpleCursorAdapter to show the elements in a ListView
		ArrayAdapter<Utilisateur> adapter = new ArrayAdapter<Utilisateur>(this,
				android.R.layout.simple_list_item_1, values);
		setListAdapter(adapter);

		progress = (ProgressBar) findViewById(R.id.progressBar1);
		text = (TextView) findViewById(R.id.textView1);

		FragmentManager fm = getFragmentManager();
		mTaskFragment = (SynchronisationFragment) fm
				.findFragmentByTag(TAG_TASK_FRAGMENT);

		// If the Fragment is non-null, then it is currently being
		// retained across a configuration change.
		if (mTaskFragment == null)
		{
			mTaskFragment = new SynchronisationFragment();
			fm.beginTransaction().add(mTaskFragment, TAG_TASK_FRAGMENT)
					.commit();
		}
	}

	// Will be called via the onClick attribute
	// of the buttons in main.xml
	public void onClick(View view)
	{
		@SuppressWarnings("unchecked")
		ArrayAdapter<Utilisateur> adapter = (ArrayAdapter<Utilisateur>) getListAdapter();
		Utilisateur utilisateur = null;
		switch (view.getId())
		{
			case R.id.add:
				// save the new comment to the database
				/*
				 * utilisateur = DAOutilisateur.createUtilisateur("Ureka",
				 * "lkggm", "19/10/1990"); adapter.add(utilisateur);
				 */
				break;
			case R.id.delete:
				if (getListAdapter().getCount() > 0)
				{
					utilisateur = (Utilisateur) getListAdapter().getItem(0);
					DAOutilisateur.deleteUtilisateur(utilisateur);
					adapter.remove(utilisateur);
				}
		}
		adapter.notifyDataSetChanged();
	}

	@Override
	protected void onResume()
	{
		DAOutilisateur.open();
		super.onResume();
	}

	@Override
	protected void onPause()
	{
		DAOutilisateur.close();
		super.onPause();
	}

	@Override
	public void onPreExecute()
	{
		// TODO Auto-generated method stub
		text.setText("Waiting");
	}

	@Override
	public void onProgressUpdate(int percent)
	{
		// TODO Auto-generated method stub
		progress.setProgress(percent);
		text.setText("Updating: " + percent + "%");
	}

	@Override
	public void onCancelled()
	{
		// TODO Auto-generated method stub
		text.setText("Canceled");
	}

	@Override
	public void onPostExecute()
	{
		// TODO Auto-generated method stub
		text.setText("Finish");
	}

	@Override
	public void processFinish(int output, List<Dossier> dossier,
			List<Lien> liens)
	{
		// TODO Auto-generated method stub

	}

}
